// #pragma once

// #include <deque>
// #include <mutex>
// #include <thread>

// #include "common.hpp"
// #include "semaphore.hpp"
// #include "serial.hpp"

// class DownGPSData {
//  public:
//   double la_;
//   double longti_;
//   int utc_;
//   double al_;
//   DownGPSData();
//   DownGPSData(double la, double longti, int utc, double time_stamp);
// };

// class GPS {
//  private:
//   // Serial serial_;
//   component::Semaphore signal_;
//   std::mutex mutex_;
//   std::thread thread_recv_;
//   bool thread_continue_ = false;

//   std::vector<component::Nmea> commandq_;
//   int utc_;
//   double altitude_;

//   void ThreadRecv();

//  public:
//   GPS();
//   GPS(bool start);
//   ~GPS();

//   bool Init(bool start);
//   bool Close();

//   component::Nmea ParseSingleSentence(const std::string& str);

//   const component::Nmea GetData();
//   const int& GetTimeStamp();
//   const double& GetAltitude();

//   const std::vector<double>& GetDownGPSDataVec();
//   DownGPSData GetDownGPSData();
// };
